package uabc.ia.agentelimpieza.vista;

import java.awt.Graphics;
import java.util.Observable;
import java.util.Observer;

import uabc.ia.agentelimpieza.ambiente.Ambiente;
import uabc.ia.agentelimpieza.ambiente.Celda;

public class AmbienteUI implements Observer{
	private CeldaUI[][] celdas;
	private Ambiente ambiente;
	
	public AmbienteUI(){
		celdas = new CeldaUI[3][3];
		ambiente = new Ambiente();
		inicializa();
	}
	
	@Override
	public void update(Observable arg0, Object arg1) {
		ambiente = (Ambiente)arg0;
		Celda[][] celdasModelo = ambiente.getCeldas();
		
		for(int i=0;i<celdas.length;i++)
			for(int j=0;j<celdas[i].length;j++)
				celdas[i][j].setCelda(celdasModelo[i][j]);
	}

	public void paint(Graphics g) {
		for(int x=0;x<celdas.length;x++)
			for(int y=0;y<celdas[x].length;y++)
				celdas[x][y].paint(g);
	}
	
	public void inicializa(){
		for(int x=0;x<celdas.length;x++)
			for(int y=0;y<celdas[x].length;y++)
				celdas[x][y]= new CeldaUI(x*100, y*100, 100, 100);
	}
	
	public void cambiarSuciedadCelda(int x, int y){
		for(int i=0;i<celdas.length;i++)
			for(int j=0;j<celdas[i].length;j++)
				if(celdas[i][j].getRectangle().contains(x, y)){
					if(!celdas[i][j].isSucia())
						celdas[i][j].setSucia(true);
					else
						celdas[i][j].setSucia(false);
				}
	}
	
	public Celda[][] getCeldasModelo(){
		Celda[][] celdasModelo = new Celda[3][3];
		
		for(int i=0;i<celdas.length;i++)
			for(int j=0;j<celdas[i].length;j++)
				celdasModelo[i][j]=celdas[i][j].getCelda();
		
		return celdasModelo;
	}
	
	public void inicializarCeldas(){
		for(int i=0;i<celdas.length;i++)
			for(int j=0;j<celdas[i].length;j++)
				celdas[i][j]= new CeldaUI(i*100, j*100, 100, 100);
	}
}
